﻿' TODO: Falta vincular los campos de Manos, Recorrido, etc....
Imports Tom0014TableAdapters
Imports Tom0014
Imports utileria
Partial Class Registro_general
    Inherits System.Web.UI.Page
    ' DECLARA: Declaracion de variable globales
    Dim utils As New utileria
    Const sPageReturn As String = "~/Registro/buscar.aspx"
    Const sPageEditKeys As String = "~/Registro/CambiaClave.aspx?animal="
    Const sPageDetalles As String = "~/Registro/detalles.aspx?animal="
    Const sNoRegistrado As String = "NO REGISTRADO"
    Const sNoAsignado As String = "--------------"
    Const sCarpetaImg As String = "~/photos/Galeria/"

#Region "Carga de pagina"
    Protected Sub Registro_general_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init

        If Not IsPostBack Then
            ' Cargar los catalogos de la pagina
            utils.fillcatalogo()
            ddlHierro = utils.fillcatalogo(ddlHierro, "H")
            ddlUbicacion = utils.fillcatalogo(ddlUbicacion, "U")
            ddlPropiedad = utils.fillcatalogo(ddlPropiedad, "P")
            ddlEncaste = utils.fillcatalogo(ddlEncaste, "E")
            ddlPelaje1 = utils.fillcatalogo(ddlPelaje1, "W")
            ddlPelaje2 = utils.fillcatalogo(ddlPelaje2, "X")
            ddlFormaPitones = utils.fillcatalogo(ddlFormaPitones, "C")
            ddlEstatus = utils.fillcatalogo(ddlEstatus, "S")
            ddlCausaMuerte = utils.fillcatalogo(ddlCausaMuerte, "F")
            ddlmCabeza_D = utils.fillPondera(ddlmCabeza_D, "pCabeza")
            ddlmCabeza_I = utils.fillPondera(ddlmCabeza_I, "pCabeza")
            ddlmMano_D = utils.fillPondera(ddlmMano_D, "pManos")
            ddlmMano_I = utils.fillPondera(ddlmMano_I, "pManos")
            ddlTientaAC = utils.fillPondera(ddlTientaAC, "NOTAAC")
            ddlTientaAP = utils.fillPondera(ddlTientaAP, "NOTAAP")
            ddlLidiaAC = utils.fillPondera(ddlLidiaAC, "NOTAAC")
            ddlLidiaAP = utils.fillPondera(ddlLidiaAP, "NOTAAP")
            ddlmRecorrido2_D = utils.fillPondera(ddlmRecorrido2_D, "pRecorrido")
            ddlmRecorrido2_I = utils.fillPondera(ddlmRecorrido2_I, "pRecorrido")
            ddlmFinalizacion_D = utils.fillPondera(ddlmFinalizacion_D, "pFinalizacion")
            ddlmFinalizacion_I = utils.fillPondera(ddlmFinalizacion_I, "pFinalizacion")
        End If

    End Sub
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        pnActualizado.CssClass = ""
        lblActualizado.Text = ""
        If Not IsPostBack Then
            Load_Data()
        End If ' End If del postback
    End Sub
    Protected Sub Load_Data()
        Dim iAnimal As Integer
        Try
            iAnimal = Request.QueryString("animal")
        Catch ex As Exception
            iAnimal = 0
        End Try

        If iAnimal <> 0 Then
            Dim animal As New GeneralDataTable
            Dim _animal As New GeneralTableAdapter
            ' Buscar el registro 
            animal = _animal.GetAnimalById(iAnimal)
            If animal.Count > 0 Then ' Si existe el registro lo asigno a los controles
                hfAnimalId.Value = animal(0).AnimalId
                imgbtnEditar.PostBackUrl = sPageEditKeys & iAnimal.ToString & "&opt=1"
                lblAnimal.Text = animal(0).ClaveSNLA & "   " & animal(0).nombre
                ddlHierro.SelectedValue = animal(0).hierro
                ddlSexo.SelectedValue = animal(0).sexo
                If Not animal(0).IsfechanacNull Then txtFechaNac.Text = animal(0).fechanac.ToString
                txtNumero.Text = animal(0).numero.ToString()
                txtLetra.Text = animal(0).letra
                txtAno.Text = animal(0).ano.ToString
                txtNombre.Text = animal(0).nombre
                ddlTientaAC.SelectedValue = animal(0).tienta_ac
                ddlTientaAP.SelectedValue = animal(0).tienta_ap
                ddlLidiaAC.SelectedValue = animal(0).lidia_ac
                ddlLidiaAP.SelectedValue = animal(0).lidia_ap
                txtPorcienCS.Text = animal(0).porcien_cs.ToString
                txtArete.Text = animal(0).arete
                ' ***************** P A D R E **********************
                If Not (animal(0).no_padre = 0) Then txtNoPadre.Text = animal(0).no_padre.ToString
                txtLtraPadre.Text = animal(0).ltra_padre
                If Not (animal(0).ano_padre = 0) Then txtAnoPadre.Text = animal(0).ano_padre.ToString
                hfId_Padre.Value = animal(0).id_padre.ToString
                hfHie_Padre.Value = animal(0).hie_padre
                If Not (animal(0).Isno_padreNull And animal(0).Isltra_padreNull And animal(0).Isano_padreNull) Then
                    Dim _Padre As New animalTableAdapter
                    Dim Padre As New animalDataTable
                    Padre = _Padre.GetAnimalBySNLA("T", animal(0).no_padre, animal(0).ltra_padre, animal(0).ano_padre)
                    If Padre.Count > 0 Then ' Si encuentro un registro lo asigno a los controles del padre
                        txtNombrePadre.Text = Padre(0).nombre
                        txtTientaACPadre.Text = Padre(0).tienta_ac
                        txtTientaAPPadre.Text = Padre(0).tienta_ap
                        txtLidiaACPadre.Text = Padre(0).lidia_ac
                        txtLidiaAPPadre.Text = Padre(0).lidia_ap
                        txtPorcienCSPadre.Text = Padre(0).porcien_cs.ToString
                        lkDetallesPadre.Visible = True
                        lkDetallesPadre.CssClass = "detalles"
                        lkDetallesPadre.NavigateUrl = sPageDetalles & animal(0).id_padre
                    Else
                        txtNombrePadre.Text = sNoRegistrado
                    End If
                End If
                ' *********************** MADRE **********************************
                txtNoMadre.Text = animal(0).no_madre.ToString
                txtLtraMadre.Text = animal(0).ltra_madre
                txtAnoMadre.Text = animal(0).ano_madre.ToString
                hfId_Madre.Value = animal(0).id_madre.ToString
                hfHie_Madre.Value = animal(0).hie_madre
                If Not (animal(0).Isno_madreNull And animal(0).Isltra_madreNull And animal(0).Isano_madreNull) Then
                    Dim _Madre As New animalTableAdapter
                    Dim Madre, abuelo As New animalDataTable
                    Madre = _Madre.GetAnimalBySNLA("V", animal(0).no_madre, animal(0).ltra_madre, animal(0).ano_madre)
                    If Madre.Count > 0 Then
                        txtNombreMadre.Text = Madre(0).nombre
                        txtTientaACMadre.Text = Madre(0).tienta_ac
                        txtTientaAPMadre.Text = Madre(0).tienta_ap
                        txtLidiaACMadre.Text = Madre(0).lidia_ac
                        txtLidiaAPMadre.Text = Madre(0).lidia_ap
                        txtPorcienCSMadre.Text = Madre(0).porcien_cs.ToString
                        lkDetallesMadre.Visible = True
                        lkDetallesMadre.CssClass = "detalles"
                        lkDetallesMadre.NavigateUrl = sPageDetalles & animal(0).id_madre
                        ' ************* A B U E L O *******************
                        If Not (Madre(0).Isno_padreNull() And Madre(0).Isltra_padreNull() And Madre(0).Isano_padreNull()) Then
                            abuelo = _Madre.GetAnimalBySNLA("T", Madre(0).no_padre, Madre(0).ltra_padre, Madre(0).ano_padre)
                            If abuelo.Count > 0 Then
                                txtNombreAbuelo.Text = abuelo(0).nombre
                                'txtTientaACPromedio.Text = abuelo(0).tienta_ac
                                'txtTientaAPPromedio.Text = abuelo(0).tienta_ap
                            Else
                                txtNombreAbuelo.Text = sNoRegistrado
                            End If
                        Else
                            txtNombreAbuelo.Text = sNoRegistrado
                            ' txtTientaACPromedio.Text = ""
                            'txtTientaAPPromedio.Text = ""
                        End If
                    Else
                        txtNombreMadre.Text = sNoRegistrado
                    End If
                End If

                txtAbuelo.Text = animal(0).abuelo_mat
                ' ************ CALCULO DE EDAD ****************
                Dim sEdad As New Double
                Dim Muerte As New DateTime
                Try
                    Muerte = animal(0).fechabaja
                Catch ex As Exception
                    Muerte = Date.Today
                End Try
                sEdad = CDbl(Format(DateDiff(DateInterval.Month, animal(0).fechanac, Muerte) / 12, "#.0"))
                txtEdad.Text = sEdad.ToString
                ' ***************** CALCULO DEL NUMERO DE HIJOS ***********
                ' TODO: Realizar el calculo de promedio de las crias del animal
                Dim crias As New CriasDataTable
                Dim _crias As New CriasTableAdapter
                Dim pondera As New ponderacionesDataTable ' Obten valor de ponderaciones
                Dim _pondera As New ponderacionesTableAdapter
                crias = _crias.GetCriasById(iAnimal)
                Dim hijos = crias.Select("Sexo='T'")
                Dim hijas = crias.Select("Sexo='V'")
                txtHijos.Text = hijos.Length.ToString
                txtHijas.Text = hijas.Length.ToString
                Dim iTientaAC, iTientaAP As Integer ' cuenta elementos
                Dim acTientaAC, acTientaAP As Integer ' Acumulador de crias

                If crias.Count > 0 Then ' Si el animal tiene crias
                    For Each cria As CriasRow In crias.Rows ' Por cada cria analiza sus tientas y lidia
                        If Not cria.Istienta_acNull And cria.tienta_ac.Length >= 1 Then
                            Dim ipondera As Integer
                            Try
                                ipondera = _pondera.pondera("NOTAAC", cria.tienta_ac.Trim).Value
                            Catch ex As Exception
                                ipondera = 0
                            End Try
                            If Not ipondera = 0 Then
                                acTientaAC += ipondera
                                iTientaAC += 1
                            End If
                        End If
                        If Not cria.Istienta_apNull And cria.tienta_ap.Length >= 1 Then
                            Dim ipondera As Integer
                            Try
                                ipondera = _pondera.pondera("NOTAAP", cria.tienta_ap.Trim).Value
                            Catch ex As Exception
                                ipondera = 0
                            End Try
                            If Not ipondera = 0 Then
                                acTientaAP += ipondera
                                iTientaAP += 1
                            End If
                        End If
                    Next

                    If iTientaAC > 0 Then
                        acTientaAC = acTientaAC / iTientaAC
                        txtTientaACPromedio.Text = _pondera.NOTAAC("NOTAAC", acTientaAC)
                    End If
                    If iTientaAP > 0 Then
                        acTientaAP = acTientaAP / iTientaAP
                        txtTientaAPPromedio.Text = _pondera.NOTAAC("NOTAAP", acTientaAP)
                    End If
                End If
                ' /***************************************************************************************************


                ddlUbicacion.SelectedValue = animal(0).ubicacion
                ddlPropiedad.SelectedValue = animal(0).propiedad
                ddlEncaste.SelectedValue = animal(0).encaste
                txtRegANTCL.Text = animal(0).reg_ANCTL
                ddlPelaje1.SelectedValue = animal(0).pelaje1
                ddlPelaje2.SelectedValue = animal(0).pelaje2
                ddlFormaPitones.SelectedValue = animal(0).piton_forma
                txtComentario.Text = animal(0).cometario
                ' HACK BUG: Modificar el llamado de la fotografia, ver la foto predeterminada
                If animal(0).photo Then
                    Dim AnimalFoto As New FotosDataTable
                    Dim _AnimalFoto As New FotosTableAdapter
                    AnimalFoto = _AnimalFoto.GetFotoByAnimal(iAnimal)
                    If AnimalFoto.Count = 1 Then
                        imgFoto.ImageUrl = sCarpetaImg & AnimalFoto(0).NombreArchivo
                    Else
                        imgFoto.ImageUrl = sCarpetaImg & animal(0).AnimalId.ToString & "_1.jpg" ' Asigno la primera foto
                    End If
                End If

                ddlEstatus.SelectedValue = animal(0).estatus
                If Not animal(0).IsfechaubicaNull Then txtFechaUbica.Text = animal(0).fechaubica.ToString
                If Not animal(0).Isfecha_herraderoNull Then txtFechaHerradero.Text = animal(0).fecha_herradero.ToString
                ddlCausaMuerte.SelectedValue = animal(0).muerto
                If Not animal(0).IsfechamuerteNull Then txtFechaMuerte.Text = animal(0).fechamuerte.ToString
                If Not animal(0).IsfechabajaNull Then txtFechaBaja.Text = animal(0).fechabaja.ToString
                ddlFenotipo.SelectedValue = animal(0).fenotipo.ToString
                ddlComportamiento.SelectedValue = animal(0).comportamiento.ToString
                txtADN.Text = animal(0).adn
            Else
                Response.Redirect(sPageReturn) ' Redirigo a busqueda si no encontré el registro
            End If ' End IF de si existe el registro
        Else
            Response.Redirect(sPageReturn)
        End If ' End If diferente de 0
    End Sub
#End Region
#Region "Asignar padres"
    ' Buscar madre y abuelo materno
    Protected Sub Madre_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtNoMadre.TextChanged, txtLtraMadre.TextChanged, txtAnoMadre.TextChanged
        Dim caja As TextBox = sender
        lkDetallesMadre.Visible = False
        If IsNumeric(txtNoMadre.Text) And txtLtraMadre.Text.Length > 0 And IsNumeric(txtAnoMadre.Text) And txtAnoMadre.Text.Length = 4 Then
            Dim sSexo, sLetra As String
            Dim iNumero, iAno As Integer
            ' Recibir las variables
            sSexo = "V"
            iNumero = CType(txtNoMadre.Text, Integer)
            sLetra = txtLtraMadre.Text
            iAno = CType(txtAnoMadre.Text, Integer)
            ' Conectarse a la base de datos para consultar
            Dim _Madre As New animalTableAdapter
            Dim Madre, abuelo As New animalDataTable

            Madre = _Madre.GetAnimalBySNLA(sSexo, iNumero, sLetra, iAno)
            If Madre.Count > 0 Then ' Si la Madre esta registrada lo asigno a los controles
                hfId_Madre.Value = Madre(0).AnimalId.ToString
                hfHie_Madre.Value = Madre(0).hierro
                'Si en la base de datos no hay nombre registrado, le avisamos al usuario
                ' que no tiene nombre asignado
                If Madre(0).IsnombreNull Or Madre(0).nombre = "" Then
                    txtNombreMadre.Text = sNoAsignado
                Else
                    txtNombreMadre.Text = Madre(0).nombre.ToString
                    ' Si el animal no tiene asignado un nombre le sugerimos el 
                    ' nombre de la madre.
                    If txtNombre.Text = "" Then txtNombre.Text = Madre(0).nombre.Remove(Madre(0).nombre.Length - 1, 1)
                End If
                If Madre(0).Istienta_acNull Then
                    txtTientaACMadre.Text = ""
                Else
                    txtTientaACMadre.Text = Madre(0).tienta_ac.ToString
                End If
                If Madre(0).Istienta_apNull Then
                    txtTientaAPMadre.Text = ""
                Else
                    txtTientaAPMadre.Text = Madre(0).tienta_ap.ToString
                End If
                If Madre(0).Isporcien_csNull Then
                    txtPorcienCSMadre.Text = ""
                Else
                    txtPorcienCSMadre.Text = Madre(0).porcien_cs.ToString
                End If

                If Not (Madre(0).Isno_padreNull() And Madre(0).Isltra_padreNull() And Madre(0).Isano_padreNull()) Then
                    txtAbuelo.Text = Madre(0).no_padre.ToString & Madre(0).ltra_padre & Madre(0).ano_padre
                    abuelo = _Madre.GetAnimalBySNLA("T", Madre(0).no_padre, Madre(0).ltra_padre, Madre(0).ano_padre)
                    If abuelo.Count > 0 Then
                        If abuelo(0).IsnombreNull Then
                            txtNombreAbuelo.Text = sNoAsignado
                        Else
                            txtNombreAbuelo.Text = abuelo(0).nombre
                        End If
                        If abuelo(0).Istienta_acNull Then
                            txtTientaACPromedio.Text = ""
                        Else
                            txtTientaACPromedio.Text = abuelo(0).tienta_ac
                        End If
                        If abuelo(0).Istienta_apNull Then
                            txtTientaAPPromedio.Text = ""
                        Else
                            txtTientaAPPromedio.Text = abuelo(0).tienta_ap
                        End If
                    Else
                        txtNombreAbuelo.Text = sNoRegistrado
                        txtTientaACPromedio.Text = ""
                        txtTientaAPPromedio.Text = ""
                    End If

                Else
                    txtNombreAbuelo.Text = sNoRegistrado
                    txtTientaACPromedio.Text = ""
                    txtTientaAPPromedio.Text = ""
                End If


                If caja.ID = "txtNoMadre" Then
                    txtLtraMadre.Focus()
                ElseIf caja.ID = "txtLtraMadre" Then
                    txtAnoMadre.Focus()
                ElseIf caja.ID = "txtAnoMadre" Then
                    txtNombre.Focus()
                End If
            Else
                txtNombreMadre.Text = sNoRegistrado
                hfId_Madre.Value = 0
                hfHie_Madre.Value = "-"
                txtTientaACMadre.Text = ""
                txtTientaAPMadre.Text = ""
                txtPorcienCSMadre.Text = ""
                txtAbuelo.Text = ""
                txtNombreAbuelo.Text = ""
                txtTientaACPromedio.Text = ""
                txtTientaAPPromedio.Text = ""

                If caja.ID = "txtNoMadre" Then
                    txtLtraMadre.Focus()
                ElseIf caja.ID = "txtLtraMadre" Then
                    txtAnoMadre.Focus()
                ElseIf caja.ID = "txtAnoMadre" Then
                    txtNombre.Focus()
                End If
            End If
        Else
            If caja.ID = "txtNoMadre" Then
                txtLtraMadre.Focus()
            ElseIf caja.ID = "txtLtraMadre" Then
                txtAnoMadre.Focus()
            ElseIf caja.ID = "txtAnoMadre" Then
                txtNombre.Focus()
            End If
        End If
    End Sub
    ' Buscar el registro del padre
    Protected Sub Padre_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtNoPadre.TextChanged, txtLtraPadre.TextChanged, txtAnoPadre.TextChanged
        Dim caja As TextBox = sender
        lkDetallesPadre.Visible = False
        If IsNumeric(txtNoPadre.Text) And txtLtraPadre.Text.Length > 0 And IsNumeric(txtAnoPadre.Text) And txtAnoPadre.Text.Length = 4 Then
            Dim sSexo, sLetra As String
            Dim iNumero, iAno As Integer
            ' Recibir las variables
            sSexo = "T"
            iNumero = CType(txtNoPadre.Text, Integer)
            sLetra = txtLtraPadre.Text
            iAno = CType(txtAnoPadre.Text, Integer)
            ' Conectarse a la base de datos para consultar
            Dim _Padre As New animalTableAdapter
            Dim Padre As New animalDataTable

            Padre = _Padre.GetAnimalBySNLA(sSexo, iNumero, sLetra, iAno)
            If Padre.Count > 0 Then ' Si el padre esta registrado lo asigno a los controles
                hfId_Padre.Value = Padre(0).AnimalId.ToString
                hfHie_Padre.Value = Padre(0).hierro
                ' Si en la base de datos no hay nombre registrado, le avisamos al usuario
                ' que no tiene nombre asignado
                If Padre(0).IsnombreNull Or Padre(0).nombre = "" Then
                    txtNombrePadre.Text = sNoAsignado
                Else
                    txtNombrePadre.Text = Padre(0).nombre.ToString
                End If
                If Padre(0).Istienta_acNull Then
                    txtTientaACPadre.Text = ""
                Else
                    txtTientaACPadre.Text = Padre(0).tienta_ac.ToString
                End If
                If Padre(0).Istienta_apNull Then
                    txtTientaAPPadre.Text = ""
                Else
                    txtTientaAPPadre.Text = Padre(0).tienta_ap.ToString
                End If
                If Padre(0).Isporcien_csNull Then
                    txtPorcienCSPadre.Text = ""
                Else
                    txtPorcienCSPadre.Text = Padre(0).porcien_cs.ToString
                End If
                If caja.ID = "txtNoPadre" Then
                    txtLtraPadre.Focus()
                ElseIf caja.ID = "txtLtraPadre" Then
                    txtAnoPadre.Focus()
                ElseIf caja.ID = "txtAnoPadre" Then
                    ddlPropiedad.Focus()
                End If
            Else
                txtNombrePadre.Text = sNoRegistrado
                hfId_Padre.Value = 0
                hfHie_Padre.Value = "-"
                txtTientaACPadre.Text = ""
                txtTientaAPPadre.Text = ""
                txtPorcienCSPadre.Text = ""
                If caja.ID = "txtNoPadre" Then
                    txtLtraPadre.Focus()
                ElseIf caja.ID = "txtLtraPadre" Then
                    txtAnoPadre.Focus()
                ElseIf caja.ID = "txtAnoPadre" Then
                    ddlPropiedad.Focus()
                End If
            End If
        Else
            If caja.ID = "txtNoPadre" Then
                txtLtraPadre.Focus()
            ElseIf caja.ID = "txtLtraPadre" Then
                txtAnoPadre.Focus()
            ElseIf caja.ID = "txtAnoPadre" Then
                ddlPropiedad.Focus()
            End If
        End If
    End Sub
#End Region
#Region "Grabar datos"
    Protected Sub Aceptar2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAceptar2.Click, btnAceptar.Click
        pnActualizado.CssClass = ""
        lblActualizado.Text = ""
        If Page.IsValid Then
            Dim animal As New GeneralDataTable
            Dim _animal As New GeneralTableAdapter
            Dim iAnimal As Integer
            Try
                iAnimal = Integer.Parse(hfAnimalId.Value)
            Catch ex As Exception
                Exit Sub
            End Try
            animal = _animal.GetAnimalById(iAnimal)
            If animal.Count = 0 Then
                pnActualizado.CssClass = "error"
                lblActualizado.Text = "Error de asignacion de id del animal"
                Exit Sub
            Else
                ' Asignaciones a tabla
                animal(0).fechanac = CType(txtFechaNac.Text, Date)
                animal(0).nombre = txtNombre.Text.Trim.ToUpper
                animal(0).tienta_ac = ddlTientaAC.SelectedValue.Trim.ToUpper
                animal(0).tienta_ap = ddlTientaAP.SelectedValue.Trim.ToUpper
                animal(0).lidia_ac = ddlLidiaAC.SelectedValue.Trim.ToUpper
                animal(0).lidia_ap = ddlLidiaAP.SelectedValue.Trim.ToUpper
                If Not (txtPorcienCS.Text = "") Then
                    animal(0).porcien_cs = CType(txtPorcienCS.Text, Double)
                Else
                    animal(0).porcien_cs = 0
                End If
                animal(0).arete = txtArete.Text
                ' TODO: Falta validaciones de logica de negocios 
                If txtNoPadre.Text = "" Then
                    animal(0).no_padre = 0
                Else
                    animal(0).no_padre = CType(txtNoPadre.Text, Integer)
                End If
                animal(0).ltra_padre = txtLtraPadre.Text.Trim.ToUpper
                If txtAnoPadre.Text = "" Then
                    animal(0).ano_padre = 0
                Else
                    animal(0).ano_padre = CType(txtAnoPadre.Text, Integer)
                End If
                animal(0).id_padre = CType(hfId_Padre.Value, Integer)
                animal(0).hie_padre = hfHie_Padre.Value
                If txtNoMadre.Text = "" Then
                    animal(0).no_madre = 0
                Else
                    animal(0).no_madre = CType(txtNoMadre.Text, Integer)
                End If
                animal(0).ltra_madre = txtLtraMadre.Text.Trim.ToUpper
                If txtAnoMadre.Text = "" Then
                    animal(0).ano_madre = 0
                Else
                    animal(0).ano_madre = CType(txtAnoMadre.Text, Integer)
                End If
                animal(0).id_madre = CType(hfId_Madre.Value, Integer)
                animal(0).hie_madre = hfHie_Madre.Value
                animal(0).abuelo_mat = txtAbuelo.Text
                animal(0).ubicacion = ddlUbicacion.SelectedValue
                animal(0).propiedad = ddlPropiedad.SelectedValue
                animal(0).encaste = ddlEncaste.SelectedValue
                animal(0).reg_ANCTL = txtRegANTCL.Text
                animal(0).pelaje1 = ddlPelaje1.SelectedValue
                animal(0).pelaje2 = ddlPelaje2.SelectedValue
                animal(0).piton_forma = ddlFormaPitones.SelectedValue
                animal(0).cometario = txtComentario.Text
                animal(0).estatus = ddlEstatus.SelectedValue
                If txtFechaUbica.Text = "" Then
                    animal(0).SetfechaubicaNull()
                Else
                    animal(0).fechaubica = CType(txtFechaUbica.Text, Date)
                End If

                If txtFechaHerradero.Text = "" Then
                    animal(0).Setfecha_herraderoNull()
                Else
                    animal(0).fecha_herradero = CType(txtFechaHerradero.Text, Date)
                End If
                animal(0).muerto = ddlCausaMuerte.SelectedValue
                If txtFechaMuerte.Text = "" Then
                    animal(0).SetfechamuerteNull()
                Else
                    animal(0).fechamuerte = CType(txtFechaMuerte.Text, Date)
                End If
                If txtFechaBaja.Text = "" Then
                    animal(0).SetfechabajaNull()
                Else
                    animal(0).fechabaja = CType(txtFechaBaja.Text, Date)
                End If
                animal(0).fenotipo = ddlFenotipo.SelectedValue
                animal(0).comportamiento = ddlComportamiento.SelectedValue
                animal(0).adn = txtADN.Text
                animal(0).modificado = DateTime.Now
                animal(0).modificadopor = Membership.GetUser().ProviderUserKey

                Try
                    _animal.Update(animal)
                    lblAnimal.Text = animal(0).ClaveSNLA & "   " & animal(0).nombre
                    pnActualizado.CssClass = "success"
                    lblActualizado.Text = "REGISTRO ACTUALIZADO"
                Catch ex As Exception
                    pnActualizado.CssClass = "error"
                    lblActualizado.Text = "ERROR AL ACTUALIZAR"
                End Try



            End If
        End If



    End Sub
#End Region
    ' Actulizar el registro

    

    Protected Sub Cancelar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCancelar2.Click, btnCancelar.Click
        Response.Redirect(sPageReturn)
    End Sub
End Class
